import os
import random

segfilepath = r'./VOCdevkit/xh/SegmentationClass'
saveBasePath = r"./VOCdevkit/xh/ImageSets/Segmentation/"

if not os.path.exists(saveBasePath):
    os.makedirs(saveBasePath)

trainval_percent = 1
train_percent = 0.9

temp_seg = os.listdir(segfilepath)
total_seg = []
for seg in temp_seg:
    if seg.endswith(".png"):
        total_seg.append(seg)

num = len(total_seg)
list = range(num)
tv = int(num * trainval_percent)
tr = int(tv * train_percent)
trainval = random.sample(list, tv)
train = random.sample(trainval, tr)

print("train and val size", tv)
print("traub suze", tr)
ftrainval = open(os.path.join(saveBasePath, 'trainval.txt'), 'w')
ftest = open(os.path.join(saveBasePath, 'test.txt'), 'w')
ftrain = open(os.path.join(saveBasePath, 'train.txt'), 'w')
fval = open(os.path.join(saveBasePath, 'val.txt'), 'w')

for i in list:
    name = total_seg[i][:-4] + '\n'
    if i in trainval:
        ftrainval.write(name)
        if i in train:
            ftrain.write(name)
            print("train %s"%name)
        else:
            fval.write(name)
            print("val %s" % name)
    else:
        ftest.write(name)
        print("test %s" % name)

ftrainval.close()
ftrain.close()
fval.close()
ftest.close()
